package 对象向上向下转型instaceof;

/*
向上转型一定是安全的，没有问题，但是存在一个缺点
即对象一旦向上转型为父类，那么就无法调用子类的特有内容；

解决方法：用对象的向下转型「还原」
格式：
    子类名称 对象名=（子类名称） 父类对象

向下转型是不安全的，因为不确定转型的类是否对应
解决方法：
instanceof
格式：
    对象  instanceof  类名称；
    将会得到一个boolean值，可以作为判断对象的父类是谁
* */
public class 向上转型 {
    public static void main(String[] args) {
        Animal zongzi = new cat();//向上转型
        zongzi.eat();

        //无法访问子类的特有方法
        // one.method();

        cat cat = (cat) zongzi;//向下转型
        cat.miao();

        //错误的向下转型
        //编译不会报错，但是运行会有异常 java.lang.ClassCastException
        //dog AAA=(dog) zongzi;

        //使用instanceof判断对象是否属于某个类
        if (zongzi instanceof dog) {
            System.out.println("粽子是狗");
        } else {
            System.out.println("粽子是猫");
        }

    }
}
